home *** CD-ROM | disk | FTP | other *** search
/ Aminet 48 / Aminet 48 (2002)(GTI - Schatztruhe)[!][Apr 2002].iso / Aminet / text / edit / vim60rt.lha / Vim / vim60 / syntax / java.vim < prev    next >
Encoding:
Text File  |  2001-09-12  |  15.3 KB  |  330 lines

  1. " Vim syntax file
  2. " Language:     Java
  3. " Maintainer:   Claudio Fleiner <claudio@fleiner.com>
  4. " URL:          http://www.fleiner.com/vim/syntax/java.vim
  5. " Last Change:  2001 Sept 11
  6.  
  7. " Please check :help java.vim for comments on some of the options available.
  8.  
  9. " Quit when a syntax file was already loaded
  10. if !exists("main_syntax")
  11.   if version < 600
  12.     syntax clear
  13.   elseif exists("b:current_syntax")
  14.     finish
  15.   endif
  16.   " we define it here so that included files can test for it
  17.   let main_syntax='java'
  18. endif
  19.  
  20. " don't use standard HiLink, it will not work with included syntax files
  21. if version < 508
  22.   command! -nargs=+ JavaHiLink hi link <args>
  23. else
  24.   command! -nargs=+ JavaHiLink hi def link <args>
  25. endif
  26.  
  27. " some characters that cannot be in a java program (outside a string)
  28. syn match javaError "[\\@`]"
  29. syn match javaError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
  30.  
  31. " use separate name so that it can be deleted in javacc.vim
  32. syn match javaError2 "#\|=<"
  33. JavaHiLink javaError2 javaError
  34.  
  35.  
  36.  
  37. " keyword definitions
  38. syn keyword javaExternal        import native package
  39. syn keyword javaError           goto const
  40. syn keyword javaConditional     if else switch
  41. syn keyword javaRepeat          while for do
  42. syn keyword javaBoolean         true false
  43. syn keyword javaConstant        null
  44. syn keyword javaTypedef         this super
  45. syn keyword javaOperator        new instanceof
  46. syn keyword javaType            boolean char byte short int long float double
  47. syn keyword javaType            void
  48. syn keyword javaStatement       return
  49. syn keyword javaStorageClass    static synchronized transient volatile final strictfp serializable
  50. syn keyword javaExceptions      throw try catch finally
  51. syn keyword javaAssert          assert
  52. syn keyword javaMethodDecl      synchronized throws
  53. syn keyword javaClassDecl       extends implements interface
  54. " to differentiate the keyword class from MyClass.class we use a match here
  55. syn match   javaTypedef         "\.\s*\<class\>"ms=s+1
  56. syn match   javaClassDecl       "^class\>"
  57. syn match   javaClassDecl       "[^.]\s*\<class\>"ms=s+1
  58. syn keyword javaBranch          break continue nextgroup=javaUserLabelRef skipwhite
  59. syn match   javaUserLabelRef    "\k\+" contained
  60. syn keyword javaScopeDecl       public protected private abstract
  61.  
  62. if exists("java_highlight_java_lang_ids") || exists("java_highlight_java_lang") || exists("java_highlight_all")
  63.   " java.lang.*
  64.   syn match javaLangClass "\<System\>"
  65.   syn keyword javaLangClass  Cloneable Comparable Runnable Boolean Byte Class
  66.   syn keyword javaLangClass  Character CharSequence ClassLoader Compiler Double Float
  67.   syn keyword javaLangClass  Integer InheritableThreadLocal Long Math Number Object Package Process
  68.   syn keyword javaLangClass  Runtime RuntimePermission InheritableThreadLocal
  69.   syn keyword javaLangClass  SecurityManager Short String StrictMath StackTraceElement
  70.   syn keyword javaLangClass  StringBuffer Thread ThreadGroup
  71.   syn keyword javaLangClass  ThreadLocal Throwable Void ArithmeticException
  72.   syn keyword javaLangClass  ArrayIndexOutOfBoundsException AssertionError
  73.   syn keyword javaLangClass  ArrayStoreException ClassCastException
  74.   syn keyword javaLangClass  ClassNotFoundException
  75.   syn keyword javaLangClass  CloneNotSupportedException Exception
  76.   syn keyword javaLangClass  IllegalAccessException
  77.   syn keyword javaLangClass  IllegalArgumentException
  78.   syn keyword javaLangClass  IllegalMonitorStateException
  79.   syn keyword javaLangClass  IllegalStateException
  80.   syn keyword javaLangClass  IllegalThreadStateException
  81.   syn keyword javaLangClass  IndexOutOfBoundsException
  82.   syn keyword javaLangClass  InstantiationException InterruptedException
  83.   syn keyword javaLangClass  NegativeArraySizeException NoSuchFieldException
  84.   syn keyword javaLangClass  NoSuchMethodException NullPointerException
  85.   syn keyword javaLangClass  NumberFormatException RuntimeException
  86.   syn keyword javaLangClass  SecurityException StringIndexOutOfBoundsException
  87.   syn keyword javaLangClass  UnsupportedOperationException
  88.   syn keyword javaLangClass  AbstractMethodError ClassCircularityError
  89.   syn keyword javaLangClass  ClassFormatError Error ExceptionInInitializerError
  90.   syn keyword javaLangClass  IllegalAccessError InstantiationError
  91.   syn keyword javaLangClass  IncompatibleClassChangeError InternalError
  92.   syn keyword javaLangClass  LinkageError NoClassDefFoundError
  93.   syn keyword javaLangClass  NoSuchFieldError NoSuchMethodError
  94.   syn keyword javaLangClass  OutOfMemoryError StackOverflowError
  95.   syn keyword javaLangClass  ThreadDeath UnknownError UnsatisfiedLinkError
  96.   syn keyword javaLangClass  UnsupportedClassVersionError VerifyError
  97.   syn keyword javaLangClass  VirtualMachineError
  98.   syn keyword javaLangObject clone equals finalize getClass hashCode
  99.   syn keyword javaLangObject notify notifyAll toString wait
  100.   JavaHiLink javaLangClass                   javaConstant
  101.   JavaHiLink javaLangObject                  javaConstant
  102.   syn cluster javaTop add=javaLangObject,javaLangClass
  103.   syn cluster javaClasses add=javaLangClass
  104. endif
  105.  
  106. if filereadable(expand("<sfile>:p:h")."/javaid.vim")
  107.   source <sfile>:p:h/javaid.vim
  108. endif
  109.  
  110. if exists("java_space_errors")
  111.   if !exists("java_no_trail_space_error")
  112.     syn match   javaSpaceError  "\s\+$"
  113.   endif
  114.   if !exists("java_no_tab_space_error")
  115.     syn match   javaSpaceError  " \+\t"me=e-1
  116.   endif
  117. endif
  118.  
  119. syn region  javaLabelRegion     transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
  120. syn match   javaUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
  121. syn keyword javaLabel           default
  122.  
  123. if !exists("java_allow_cpp_keywords")
  124.   syn keyword javaError auto delete enum extern friend inline redeclared
  125.   syn keyword javaError register signed sizeof struct template typedef union
  126.   syn keyword javaError unsigned operator
  127. endif
  128.  
  129. " The following cluster contains all java groups except the contained ones
  130. syn cluster javaTop add=javaExternal,javaError,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaClassDecl,javaClassDecl,javaScopeDecl,javaError,javaError2,javaUserLabel,javaLangObject
  131.  
  132.  
  133. " Comments
  134. syn keyword javaTodo             contained TODO FIXME XXX
  135. if exists("java_comment_strings")
  136. syn region  javaCommentString    contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
  137. syn region  javaComment2String   contained start=+"+  end=+$\|"+  contains=javaSpecial,javaSpecialChar,@Spell
  138. syn match   javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
  139. syn match   javaCommentCharacter contained "'\\''" contains=javaSpecialChar
  140. syn match   javaCommentCharacter contained "'[^\\]'"
  141.   syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
  142.   syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
  143. endif
  144. syn region  javaComment          start="/\*"  end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
  145. syn match   javaCommentStar      contained "^\s*\*[^/]"me=e-1
  146. syn match   javaCommentStar      contained "^\s*\*$"
  147. syn match   javaLineComment      "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
  148. JavaHiLink javaCommentString javaString
  149. JavaHiLink javaComment2String javaString
  150. JavaHiLink javaCommentCharacter javaCharacter
  151.  
  152. syn cluster javaTop add=javaComment,javaLineComment
  153.  
  154. if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
  155.   syntax case ignore
  156.   " syntax coloring for javadoc comments (HTML)
  157.   syntax include @javaHtml <sfile>:p:h/html.vim
  158.   unlet b:current_syntax
  159.   syn region  javaDocComment    start="/\*\*"  end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaTodo,@Spell
  160.   syn region  javaCommentTitle  contained matchgroup=javaDocComment start="/\*\*"   matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="@"me=s-1,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell
  161.  
  162.   syn region javaDocTags  contained start="{@link" end="}"
  163.   syn match  javaDocTags  contained "@\(see\|param\|exception\|throws\)\s\+\S\+" contains=javaDocParam
  164.   syn match  javaDocParam contained "\s\S\+"
  165.   syn match  javaDocTags  contained "@\(version\|author\|return\|deprecated\|since\)\>"
  166.   syntax case match
  167. endif
  168.  
  169. " match the special comment /**/
  170. syn match   javaComment          "/\*\*/"
  171.  
  172. " Strings and constants
  173. syn match   javaSpecialError     contained "\\."
  174. syn match   javaSpecialCharError contained "[^']"
  175. syn match   javaSpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
  176. syn region  javaString          start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
  177. " next line disabled, it can cause a crash for a long line
  178. "syn match   javaStringError      +"\([^"\\]\|\\.\)*$+
  179. syn match   javaCharacter        "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
  180. syn match   javaCharacter        "'\\''" contains=javaSpecialChar
  181. syn match   javaCharacter        "'[^\\]'"
  182. syn match   javaNumber           "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
  183. syn match   javaNumber           "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
  184. syn match   javaNumber           "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
  185. syn match   javaNumber           "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
  186.  
  187. " unicode characters
  188. syn match   javaSpecial "\\u\d\{4\}"
  189.  
  190. syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
  191.  
  192. if exists("java_highlight_functions")
  193.   if java_highlight_functions == "indent"
  194.     syn match  javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
  195.     syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
  196.     syn match  javaFuncDef "^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
  197.     syn region javaFuncDef start=+^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
  198.   else
  199.     " This line catches method declarations at any indentation>0, but it assumes
  200.     " two things:
  201.     "   1. class names are always capitalized (ie: Button)
  202.     "   2. method names are never capitalized (except constructors, of course)
  203.     syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*(+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses
  204.   endif
  205.   syn match  javaBraces  "[{}]"
  206.   syn cluster javaTop add=javaFuncDef,javaBraces
  207. endif
  208.  
  209. if exists("java_highlight_debug")
  210.  
  211.   " Strings and constants
  212.   syn match   javaDebugSpecial          contained "\\\d\d\d\|\\."
  213.   syn region  javaDebugString           contained start=+"+  end=+"+  contains=javaDebugSpecial
  214.   syn match   javaDebugStringError      +"\([^"\\]\|\\.\)*$+
  215.   syn match   javaDebugCharacter        contained "'[^\\]'"
  216.   syn match   javaDebugSpecialCharacter contained "'\\.'"
  217.   syn match   javaDebugSpecialCharacter contained "'\\''"
  218.   syn match   javaDebugNumber           contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
  219.   syn match   javaDebugNumber           contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
  220.   syn match   javaDebugNumber           contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
  221.   syn match   javaDebugNumber           contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
  222.   syn keyword javaDebugBoolean          contained true false
  223.   syn keyword javaDebugType             contained null this super
  224.   syn region javaDebugParen  start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
  225.  
  226.   " to make this work you must define the highlighting for these groups
  227.   syn match javaDebug "System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
  228.   syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
  229.   syn match javaDebug "trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
  230.  
  231.   syn cluster javaTop add=javaDebug
  232.  
  233.   if version >= 508 || !exists("did_c_syn_inits")
  234.     JavaHiLink javaDebug                 Debug
  235.     JavaHiLink javaDebugString           DebugString
  236.     JavaHiLink javaDebugStringError      javaError
  237.     JavaHiLink javaDebugType             DebugType
  238.     JavaHiLink javaDebugBoolean          DebugBoolean
  239.     JavaHiLink javaDebugNumber           Debug
  240.     JavaHiLink javaDebugSpecial          DebugSpecial
  241.     JavaHiLink javaDebugSpecialCharacter DebugSpecial
  242.     JavaHiLink javaDebugCharacter        DebugString
  243.     JavaHiLink javaDebugParen            Debug
  244.  
  245.     JavaHiLink DebugString               String
  246.     JavaHiLink DebugSpecial              Special
  247.     JavaHiLink DebugBoolean              Boolean
  248.     JavaHiLink DebugType                 Type
  249.   endif
  250. endif
  251.  
  252. if exists("java_mark_braces_in_parens_as_errors")
  253.   syn match javaInParen          contained "[{}]"
  254.   JavaHiLink javaInParen        javaError
  255.   syn cluster javaTop add=javaInParen
  256. endif
  257.  
  258. " catch errors caused by wrong parenthesis
  259. syn region  javaParen            transparent start="(" end=")" contains=@javaTop,javaParen
  260. syn match   javaParenError       ")"
  261. JavaHiLink javaParenError       javaError
  262.  
  263. if !exists("java_minlines")
  264.   let java_minlines = 10
  265. endif
  266. exec "syn sync ccomment javaComment minlines=" . java_minlines
  267.  
  268. " The default highlighting.
  269. if version >= 508 || !exists("did_java_syn_inits")
  270.   if version < 508
  271.     let did_java_syn_inits = 1
  272.   endif
  273.   JavaHiLink javaFuncDef        Function
  274.   JavaHiLink javaBraces            Function
  275.   JavaHiLink javaBranch            Conditional
  276.   JavaHiLink javaUserLabelRef        javaUserLabel
  277.   JavaHiLink javaLabel            Label
  278.   JavaHiLink javaUserLabel        Label
  279.   JavaHiLink javaConditional        Conditional
  280.   JavaHiLink javaRepeat            Repeat
  281.   JavaHiLink javaExceptions        Exception
  282.   JavaHiLink javaAssert            Statement
  283.   JavaHiLink javaStorageClass        StorageClass
  284.   JavaHiLink javaMethodDecl        javaStorageClass
  285.   JavaHiLink javaClassDecl        javaStorageClass
  286.   JavaHiLink javaScopeDecl        javaStorageClass
  287.   JavaHiLink javaBoolean        Boolean
  288.   JavaHiLink javaSpecial        Special
  289.   JavaHiLink javaSpecialError        Error
  290.   JavaHiLink javaSpecialCharError    Error
  291.   JavaHiLink javaString            String
  292.   JavaHiLink javaCharacter        Character
  293.   JavaHiLink javaSpecialChar        SpecialChar
  294.   JavaHiLink javaNumber            Number
  295.   JavaHiLink javaError            Error
  296.   JavaHiLink javaStringError        Error
  297.   JavaHiLink javaStatement        Statement
  298.   JavaHiLink javaOperator        Operator
  299.   JavaHiLink javaComment        Comment
  300.   JavaHiLink javaDocComment        Comment
  301.   JavaHiLink javaLineComment        Comment
  302.   JavaHiLink javaConstant        Constant
  303.   JavaHiLink javaTypedef        Typedef
  304.   JavaHiLink javaTodo            Todo
  305.  
  306.   JavaHiLink javaCommentTitle        SpecialComment
  307.   JavaHiLink javaDocTags        Special
  308.   JavaHiLink javaDocParam        Function
  309.   JavaHiLink javaCommentStar        javaComment
  310.  
  311.   JavaHiLink javaType            Type
  312.   JavaHiLink javaExternal        Include
  313.  
  314.   JavaHiLink htmlComment        Special
  315.   JavaHiLink htmlCommentPart        Special
  316.   JavaHiLink javaSpaceError        Error
  317. endif
  318.  
  319. delcommand JavaHiLink
  320.  
  321. let b:current_syntax = "java"
  322.  
  323. if main_syntax == 'java'
  324.   unlet main_syntax
  325. endif
  326.  
  327. let b:spell_options="contained"
  328.  
  329. " vim: ts=8
  330.